110 PRINT "THIS PROGRAM READS AN INPUT ARRAY FROM A DISK FILE, ALLOWS YOU TO DO (OPTIONAL)BLOCK RELAXATIONS, THEN AUTOMATICALLY GOES THROUGH THE PROCESS OF FINDING A SOLUTION VIA RELAXATION.": PRINT
120 PRINT "YOU CAN TELL THIS PROGRAM HOW OFTEN YOU WANT TO LOOK AT THE INTERMEDIATE RESULTS AND WHEN YOU WANT TO BE ABLE TO DO POINT RELAXATION MANUALLY. YOU CAN"
130 PRINT "ABORT THE PROGRAM AFTER ANY PRINTOUT AND SAVE THE RESULTING ARRAY, FINISHED OR NOT, TO DISK."
140 PRINT : PRINT : PRINT
150 REM
152 REM
154 REM HOUSEKEEPING
156 REM
158 REM
160 QUIT = - 1
162 DIM NODE(20,20),MASK(20,20),RESID(20,20)
165 COUNTITERS = 0: REM --KEEPS TRACK OF # OF ITERATIONS COMPUTER HAS DONE
170 LCOL = 0:LROW = 0: REM --THESE WILL KEEP COORDINATES OF PREVIOUS RELAXATION
190 REM
192 REM
194 REM READ INPUT FILE
196 REM
198 REM
210 INPUT "WHAT INPUT FILE DO YOU WANT TO USE? ";NAME$
220 GOSUB 10000: REM --READ MROWS, MCOLS, INACTIVE, NODE ARRAY
290 REM
292 REM
294 REM CREATE MASK ARRAY
295 REM FROM NODE ARRAY
296 REM
298 REM
300 GOSUB 15000
370 REM
372 REM
374 REM DO MANUAL RELAX'N
375 REM AFTER PRINTING?
376 REM
378 REM
380 PRINT : PRINT : INPUT "DO YOU WANT TO DO MANUAL RELAXATION ON INDIVIDUAL POINTS AFTER YOU SEE THE ARRAYS ARE DISPLAYED (Y OR N)? ";MANUAL$
390 REM
392 REM
394 REM GET DECIMAL PLACES
395 REM OF ACCURACY
396 REM
398 REM
400 PRINT : PRINT : INPUT "ENTER THE NUMBER OF DECIMAL PLACES OF ACCURACY DESIRED FOR THE CALCULATIONS: ";S1CALE
1125 IF LROW = RROW AND LCOL = RCOL THEN DUPLICN$ = "Y"
1130 IF ITERLEFT > 0 THEN 1250
1140 REM
1150 REM --THIS DONE IF WE ARE PRINTING RESULTS
1160 GOSUB 20000: REM --PRINT ARRAYS
1170 REM
1174 REM --POINT RELAXATION BY HUMAN (OPTIONAL)
1175 IF MANUAL$ = "Y" THEN GOSUB 24000
1180 REM
1185 IF DUPLICN$ = "N" THEN 1200
1190 PRINT : PRINT "THE PROGRAM HAS RELAXED ON THE SAME POINT TWICE. THIS PROBABLY MEANS THAT THIS PROGRAM WILL NEVER END": PRINT : PRINT " *** YOU MAY WANT TO QUIT ***"
1197 PRINT : INPUT "NUMBER OF ITERATIONS UNTIL NEXT PRINTOUT? ";MXITERS:ITERLEFT = MXITERS
1198 REM
1200 GOSUB 21000: REM --EVALUATE RESID, UPDATE QUIT$
1220 IF QUIT$ = "Y" THEN 1300
1240 PRINT : INPUT "DO YOU WANT TO QUIT CALCULATIONS AND SAVE THE NODE ARRAY AS IS (Y OR N)? ";QUIT$
1241 REM
1242 PRINT : PRINT : INPUT "HOW MANY ITERATIONS DO YOU WANT TO DO BEFORE THE NODE AND RESID ARRAYS ARE PRINTED? ";ITERLEFT
1243 REM
1245 GOTO 1300
1248 REM
1249 REM --THIS DONE IF WE ARE NOT PRINTING RESULTS
1250 GOSUB 21000: REM --EVALUATE RESID, UPDATE QUIT$
1260 IF DUPLICN$ = "N" THEN 1300
1270 PRINT : PRINT "THE PROGRAM HAS JUST RELAXED ON THE SAME POINT TWICE. THIS PROBABLY MEANS THAT THIS PROGRAM WILL NEVER END.": PRINT
1280 PRINT " *** YOU MAY WANT TO QUIT THIS *** *** PROGRAM AT THE NEXT *** *** OPPORTUNITY ***"
1296 REM
1298 REM
1300 GOTO 1000: REM --END 'WHILE' LOOP
1308 REM
1310 REM
1312 REM **************
1314 REM * END OF *
1316 REM * MAIN LOOP *
1318 REM **************
1320 REM
1322 REM
1390 REM
1392 REM
1395 REM DO MANUAL
1396 REM RELAXATION
1397 REM
1399 REM
1400 PRINT : PRINT : INPUT "DO YOU WANT TO DO ANY POINT RELAXATIONS MANUALLY BEFORE ENDING THIS PROGRAM? (Y OR N)? ";FLAG$
1420 IF FLAG$ = "Y" THEN GOSUB 24000
1492 REM
1494 REM RECALCULATE RESULTS
1495 REM FOR ACCURACY
1496 REM
1498 REM
1500 GOSUB 18000: REM -/RECALCULATE RESID ARRAY
1510 GOSUB 21000: REM --EVALUATE RESID ARRAY
1520 GOSUB 20000: REM --DISPLAY NODE, RESID, BIGRESID, SUMRESID
1530 PRINT : PRINT "THIS PROGRAM PERFORMED ";COUNTITERS;" AUTOMATIC": PRINT "POINT RELAXATIONS"
1990 REM
1992 REM
1994 REM WRITE FILE TO
1995 REM DISK (OPTIONAL)
1996 REM
1998 REM
2000 PRINT : PRINT : INPUT "THIS PROGRAM HAS FINISHED ITS WORK. DO YOU WANT TO SAVE THE NODE ARRAY (Y OR N)? ";FLAG$
2010 IF FLAG$ = "N" THEN 2100
2020 REM
2030 PRINT : INPUT "UNDER WHAT FILENAME DO YOU WANT TO SAVE IT? ";NAME$